unit prsSeguranca;

interface

uses segUsuario, segLog, prsBase;

procedure inserirUsuarioDefault;
function Logar(const Value: TUsuario): Boolean;
procedure RegistrarLog(Usuario: TUsuario; Acao: TAcao; Tabela: string = '';
  Registro: integer = 0; Descricao: string = '');

implementation

uses udmPrincipal;

procedure inserirUsuarioDefault(const Value: TUsuario);
begin
  dmPrincipal.TransacaoSafety.StartTransaction;
  try
    dmPrincipal.DaoSafety.Inserir(Value);
  finally

  end;
end;

function Logar(const Value: TUsuario): Boolean;
begin
  Result := false;
  if dmPrincipal.DaoSafety.BuscarLoginSenha(Value) > 0 then
  begin
    inserirDadosDefault();
{$IFNDEF DEBUG}
    RegistrarLog(Value, taAcesso);
{$ENDIF}
    Result := True;
  end;
end;


procedure RegistrarLog(Usuario: TUsuario; Acao: TAcao;
  Tabela: string; Registro: integer; Descricao: string);
var
  log: TLog;
begin
  log := TLog.Create;
  try
    log.Usuario := Usuario.Nome + ' ' + Usuario.SobreNome + ' (' +
      Usuario.Login + ')';

    log.Data := Now;

    case Acao of
      taInclusao:
        log.Acao := 'Inclusao';
      taAlteracao:
        log.Acao := 'Alteracao';
      taExclusao:
        log.Acao := 'Exclusao';
      taConsulta:
        log.Acao := 'Consulta';
      taAcesso:
        log.Acao := 'Acesso';
    end;

    if Tabela <> '' then
      log.Tabela := Tabela;

    log.Registro := Registro;

    dmPrincipal.TransacaoSafety.StartTransaction;
    try
      dmPrincipal.DaoSafety.Inserir(log);
      dmPrincipal.TransacaoSafety.Commit;
    except
      dmPrincipal.TransacaoSafety.RollBack;
    end;
  finally
    log.Free;
  end;
end;

end.
